package file;

import java.io.File;
import java.io.FileFilter;
import java.util.logging.Filter;

/**
 * filter:过滤器
 * accept：接受
 *
 * 有条件的获取一个目录中的子项
 *
 * File有一个重载的listFiles方法，允许我们传入一个文件过滤器，并在该过滤器上定义过滤条件，之后listFiles执行完毕会将目录中所有满足过滤器要求的子项进行返回
 */
public class ListFileDemo2 {
    public static void main(String[] args) {
        //获取当前目录中名字里含有字母”a“的子项
        File dir = new File(".");
        if(dir.isDirectory()){
            /*
            File listFiles(FileFilter filter)
            该方法会将该目录中每一个子项都作为参数先传给filter的accept方法，只有accept方法返回true的子项最终才会被包含在返回的File[]数组中进行返回
             */

            FileFilter filter = new FileFilter() {
                @Override
                public boolean accept(File file) {
                    return file.getName().contains("o");
                }
            };

            File[] subs = dir.listFiles(filter);
            System.out.println("共" + subs.length + "个子项");
            for (int i = 0; i < subs.length; i++) {
                File sub = subs[i];
                System.out.println(sub.getName());
            }
        }
    }
}

//class MyFilter implements FileFilter{
//
//    @Override
//    public boolean accept(File file) {
//        //过滤条件是名字中含有”o“的
//        String name = file.getName();//获取该file表示的文件或目录的名字
//
//        return name.contains("o");
//    }
//}
